package com.jlb.demo.payment;

/**
 * 支付接口 - 演示多态特性
 * 定义支付的规范，不同的支付方式实现此接口
 */
public interface Payment {
    
    /**
     * 支付方法
     * @param orderId 订单ID
     * @param amount 支付金额
     * @return 是否支付成功
     */
    boolean pay(Long orderId, Double amount);
    
    /**
     * 获取支付方式名称
     * @return 支付方式名称
     */
    String getPaymentMethod();
    
    /**
     * 获取支付手续费率
     * @return 手续费率（百分比）
     */
    Double getFeeRate();
    
    /**
     * 计算手续费
     * @param amount 支付金额
     * @return 手续费
     */
    default Double calculateFee(Double amount) {
        return amount * getFeeRate() / 100.0;
    }
} 